package d2_final_exam.d3_third_question;

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;

public class Demo01 {
    public static void main(String[] args) throws Exception {
        //目标: 完成文件读取与写出的案例
        //1、定义字符输入流管道与源文件接通 --->并将其包装成高级的缓冲字符输入流
        BufferedReader br = new BufferedReader(
                new FileReader("javapromax\\day16_exam\\src\\系统菜单.txt"));

        //2、使用缓冲流新增的方法readLine()每次读取一行
        //--缓冲字符输如流多了一个按照行读取内容的功能。(经典代码--背诵)
        String line; //如果没有读取到,就会返回null
        //6、装备一个集合,用与存储读取到的数据
        ArrayList<String> data = new ArrayList<>();
        //3、开始循环读取
        while((line = br.readLine()) != null){
            //7、将读取到的数据,存入到集合中
            data.add(line);
//            System.out.println(line);//空白字符串不是null -- > 还是会进行读取
        }
        //8、使用Collections的方法sort()对集合进行排序
        Collections.sort(data);//不需要指定排序规则,默认会按照字符字符串前面的数据,进行排序
        //9.遍历集合做输出操作
        data.forEach(System.out::println);

        //5、完成第二个需求: 将正确的菜单顺序, 写出到一个新文件"系统菜单2.txt"中保存
        //1.创建一个字符输出流与目标文件接通
        BufferedWriter bw = new BufferedWriter(new FileWriter("javapromax\\day16_exam\\src\\系统菜单2.txt"));

        //2.遍历集合将数据,将集合中的数据输出到木匾文件
        data.forEach(d ->{
            try {
                bw.write(d);
                bw.newLine();
            } catch (Exception e) {
                e.printStackTrace();//打印堆栈信息
            }
        });
        //4、关闭管道
        bw.close();
        br.close();
    }
}
